#ifndef LINKEDLIST_H_INCLUDED
#define LINKEDLIST_H_INCLUDED

#include "argumentos.h"

/// Tipos de nós:
typedef enum notipo_
{
    NO_STRING,
    NO_ARGS
} notipo;

/// Nó da lista:
typedef struct llno_
{
    union
    {
        char* s;
        argumentos a;
    } valor;
    struct llno_ *prox;
} llno;

/// Cabeça da lista:
typedef struct linkedlist_
{
    llno*        inicio;
    llno*        fim;
    notipo       tipo;
    unsigned int tamanho;
} linkedlist;

void linkedlist_init(linkedlist *l, notipo t);
void linkedlist_clear(linkedlist *l);
void linkedlist_push_string(linkedlist *l, char *s);
void linkedlist_push_args(linkedlist *l, argumentos a);

#endif // LINKEDLIST_H_INCLUDED
